
////////////////////////////////////////////////////////////
//	File:		"TaskThread.h"
//	Author:		[A ] Anthony  Lundquist
//	Created:	[A ] March 14, 2010
//	Purpose:	the threads that tasks run on
////////////////////////////////////////////////////////////

#ifndef TASKTHREAD_H_
#define TASKTHREAD_H_

class AL_Task;

#include "AL_Thread.h"
class TaskThread : public AL_Thread
{

public:

	/* Public Data Members */

protected:

	/* Protected Data Members */

private:

	/* Private Data Members */
	AL_Task*	m_pTask;
	bool		m_bJustFinished;


	/* Disabled Functions */

public:

	void ThreadMain(void);
	void Init(void);
	void Shutdown(void);

	void FinishTask(void);

	////////////////////////////////////////////////////////////
	//	Function:	Constructor
	//	Created:	[A ] March 14, 2010
	//	Purpose:	Initializes the object.
	////////////////////////////////////////////////////////////
	TaskThread();

	////////////////////////////////////////////////////////////
	//	Function:	Accessors
	//	Created:	[A ] March 14, 2010
	//	Purpose:	Returns a specific data member.
	//	Out:		The data member.
	////////////////////////////////////////////////////////////
	inline	AL_Task*	GetTask(void)			{	return m_pTask;	}
	bool				GetJustFinished(void);

	////////////////////////////////////////////////////////////
	//	Function:	Mutators
	//	Created:	[A ] March 14, 2010
	//	Purpose:	Sets a specific data member.
	//	In:			The new value.
	////////////////////////////////////////////////////////////
	inline	void	SetTask(AL_Task* _pTask)	{	m_pTask = _pTask;	}

	////////////////////////////////////////////////////////////
	//	Function:	Destructor
	//	Created:	[A ] March 14, 2010
	//	Purpose:	Deallocates the object.
	////////////////////////////////////////////////////////////
	~TaskThread();

protected:

	/* Protected Functions */

private:

	/* Private Functions */

};

#endif
